// #include<iostream>
// #include"BlockQueue.hpp"
// #include"Task.hpp"
// #include<ctime>
// #include<unistd.h>

// using namespace std;

// int Add(int x,int y)
// {
//     return x + y;
// }
// void* productor(void* args)
// {
//     while(true)
//     {
//         BlockQueue<Task>* td=(BlockQueue<Task>*)args;
//         int x=rand()%10+1;
//         int y=rand()%5+1;
//         Task task(x,y,Add);
//         td->push(task);
//         cout<<"生产者:"<<task._x<<" + "<<task._y<<" = "<<endl;
//         sleep(1);
//     }
// }
// void* consumer(void* args)
// {
//     while(true)
//     {
//         BlockQueue<Task>* td=(BlockQueue<Task>*)args;
//         Task task;
//         td->pop(&task);
//         cout<<"消费者:"<<task._x<<" + "<<task._y<<" = "<<task()<<endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     cout<<"helllo world"<<endl;
//     srand((uint64_t)time(nullptr)^getpid()^0XFF45);
//     BlockQueue<Task>* bq=new BlockQueue<Task>();
//     pthread_t c[2],p[3];
//     pthread_create(c,nullptr,consumer,(void*)bq);
//     pthread_create(c+1,nullptr,consumer,(void*)bq);
//     pthread_create(p,nullptr,productor,(void*)bq);
//     pthread_create(p+1,nullptr,productor,(void*)bq);
//     pthread_create(p+2,nullptr,productor,(void*)bq);

//     for(int i=0;i<3;i++)
//     {s
//         pthread_join(p[i],nullptr);
//     }
//     for(int i=0;i<2;i++)
//     {
//         pthread_join(c[i],nullptr);
//     }
//     delete bq;
//     return 0;
// }